/**
 * @fileoverview app-base.js
 * @description app基础操作模块
 * @attention BrowserWindow.getFocusedWindow()是当前的聚焦的窗口进行通信，我们可以使用mainWindow进行代替
 * @attention mainWindow.webContents.send是给渲染进程发送消息
 */
import { app, ipcMain } from 'electron'
export default (mainWindow) => {
    // 关闭窗口
    ipcMain.on('close-window', () => {
        // 关闭窗口
        mainWindow.close()
    })
    /*
     * 监听重启应用的请求
     * @attention1 重启应用后，主进程会被关闭，所以需要退出应用
     * @attention2 开发环境重启会白屏 仅可打包完成在安装包中测试
     *
     */
    ipcMain.on('restart-app', () => {
        app.relaunch() // 重启应用
        app.exit() // 退出应用 -- 因为重启应用后，主进程会被关闭，所以需要退出应用
    })
    // 最小化窗口
    ipcMain.on('minimize-window', () => {
        mainWindow.minimize()
    })
    // 最大化窗口
    ipcMain.on('maximize-window', () => {
        if (mainWindow.isMaximized()) {
            mainWindow.restore()
        } else {
            mainWindow.maximize()
        }
    })
    // 退出应用
    ipcMain.on('quit-app', () => {
        app.quit()
    })
    // 应用置顶
    ipcMain.on('set-always-on-top', () => {
        const isAlwaysOnTop = mainWindow.isAlwaysOnTop()
        mainWindow.setAlwaysOnTop(!isAlwaysOnTop)
        // 通知渲染进程应用是否置顶
        mainWindow.webContents.send('alwaysOnTop', !isAlwaysOnTop)
    })
    // 监听窗口变化
    mainWindow.on('resize', () => {
        // 监听当前的窗口状态告诉渲染进程当前是啥情况
        if (mainWindow.isFullScreen()) {
            // 满屏
            mainWindow.webContents.send('currentScreenStatus', 'full')
        } else if (mainWindow.isMaximized()) {
            // 最大值
            mainWindow.webContents.send('currentScreenStatus', 'max')
        } else {
            // 最小值
            mainWindow.webContents.send('currentScreenStatus', 'normal')
        }
    })
    // 应用满屏状态
    ipcMain.on('set-full-screen', () => {
        const isFullScreen = mainWindow.isFullScreen()
        mainWindow.setFullScreen(!isFullScreen)
    })
}
